<?php

class RegisterBox extends AbstractBox {
	protected $template = 'user/register.tpl';
	
	protected function setup() {
		$loggedUser = LoggedUser::whoIsLogged();
		if ($loggedUser) {
			Utils::redirect('uvod.html');
		} elseif (Utils::post()) {
			$data = Utils::post();
			MySmarty::assign('values', $data);
			$validation = $this->validateRegistrationForm($data);
			if ($validation !== TRUE) {
				MySmarty::assign('errors', $validation);
			} else {
				$data = $this->prepareDataToSave($data);
				$user = new User($data);
				$user->save();
				
				MySmarty::assign('message', 'Váš účet bude aktivovaný adminkou a o aktivácii budete informovaný e-mailom na adresu, ktorú ste zadali pri registrácii');
			}
		}
	}
	
	protected function validateRegistrationForm($data) {
		$errors = array();
		
		if (trim($data['first_name']) == '') {
			$errors['first_name'] = 'Prosím, vyplňte meno';
		}
		
		if (trim($data['last_name']) == '') {
			$errors['last_name'] = 'Prosím, vyplňte priezvisko';
		}
		
		if (trim($data['address']) == '') {
			$errors['address'] = 'Prosím, vyplňte ulicu / číslo domu';
		}
		
		if (trim($data['zip']) == '') {
			$errors['zip'] = 'Prosím, vyplňte PSČ';
		}
		
		if (trim($data['city']) == '') {
			$errors['city'] = 'Prosím, vyplňte mesto';
		}
		
		if (trim($data['country']) == '') {
			$errors['country'] = 'Prosím, vyplňte štát';
		}
		
		if (trim($data['email']) == '') {
			$errors['email'] = 'Prosím, vyplňte e-mail';
		} else {
			$validEmail = t3lib_div::validEmail($data['email']);
			if (!$validEmail) {
				$errors['email'] = 'Prosím, zadajte validný e-mail';
			}
		}

		if (trim($data['username']) == '') {
			$errors['username'] = 'Prosím, vyplňte prihlasovacie meno';
		} else {
			$userRepository = new UserRepository();
			$userRepository->setAdditionalWhere(array(array('column' => 'deleted', 'value' => 0, 'xxx' => '=')));
			$user = $userRepository->getOneByUsername(addslashes($data['username']));
			if ($user) {
				$errors['username'] = 'Prihlasovacie meno sa už používa';
			}
		}
		
		if (trim($data['password']) == '') {
			$errors['password'] = 'Prosím, vyplňte heslo';
		}
		
		if (trim($data['confirm_password']) == '') {
			$errors['confirm_password'] = 'Prosím, vyplňte potvrdenie hesla';
		}
		
		if ($data['password'] != $data['confirm_password']) {
			$errors['confirm_password'] = 'Heslo a potvrdenie hesla sa nezhodujú';
		}
		
		if (!$data['data_processing']) {
			$errors['data_processing'] = 'Potvrďte prosím súhlas so spracovaním údajov';
		}
		
		if (!$data['rejection']) {
			$errors['rejection'] = 'Potvrďte prosím súhlas s vyradením';
		}
		
		if (!$data['no_pressure']) {
			$errors['no_pressure'] = 'Potvrďte prosím, že ste sa slobodne zaregistrovali';
		}
		
		if ($errors) {
			return $errors;
		}
		return TRUE;
	}
	
	protected function prepareDataToSave($data) {
		unset($data['confirm_password']);
		unset($data['submit']);
		unset($data['photo']);
		unset($data['data_processing']);
		unset($data['rejection']);
		unset($data['no_pressure']);
		
		$data['pid'] = 53;	// TOTO by malo byt v configu ale zadara sa mi to nechce robit :)
		$data['crdate'] = time();
		$data['tstamp'] = time();
		$data['usergroup'] = 1;
		$data['disable'] = 1;
		
		if ($_FILES['photo']['tmp_name']) {
			$uploadFolder = dirname(__FILE__) . '/../../../uploads/pics/';
			$filename = time() . '_' . $_FILES['photo']['name'];
			move_uploaded_file($_FILES['photo']['tmp_name'], $uploadFolder . $filename);
			$data['image'] = $filename;
		}

		return $data;
	}
}

?>